package org.dromara.hm.domain.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.annotation.ExcelNotation;
import org.dromara.common.excel.annotation.ExcelRequired;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.hm.domain.HmCustomer;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 客户信息视图对象 hm_customer
 *
 * @author zy Hu
 * @date 2024-12-15
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = HmCustomer.class)
public class HmCustomerExcelVo implements Serializable
{

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 服务店铺名称
     */
    @ExcelRequired(fontColor = IndexedColors.RED)
    @ExcelProperty(value = "* 服务店铺名称")
    @Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "storeId")
    private String storeName;

    /**
     * 客户名称
     */
    @ExcelRequired(fontColor = IndexedColors.RED)
    @ExcelProperty(value = "* 客户名称")
    private String customerName;

    /**
     * 客户性别
     */
    @ExcelProperty(value = "* 客户性别", converter = ExcelDictConvert.class)
    @ExcelRequired(fontColor = IndexedColors.RED)
    @ExcelDictFormat(dictType = "sys_user_sex")
    private String customerSex;

    /**
     * 客户出生年月
     */
    @ExcelRequired(fontColor = IndexedColors.RED)
    @ExcelNotation(value = "时间格式为YYYY/MM/DD 例如1987/01/01")
    @ExcelProperty(value = "* 出生日期")
    @JsonFormat(pattern = "yyyy/MM/dd")
    private String customerBirth;


    /**
     * 生日类型
     */
    @ExcelProperty(value = "生日类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_brith_type")
    private String birthdayType;

    /**
     * 客户生日
     */
    @ExcelRequired(fontColor = IndexedColors.RED)
    @ExcelProperty(value = "* 客户生日")
    private String customerBirthday;

    /**
     * 政治面貌
     */
    @ExcelProperty(value = "政治面貌", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_political")
    private String political;

    /**
     * 籍贯
     */
    @ExcelRequired(fontColor = IndexedColors.RED)
    @ExcelProperty(value = "* 籍贯")
    private String nativePlace;

    /**
     * 现住址
     */
    @ExcelRequired(fontColor = IndexedColors.RED)
    @ExcelProperty(value = "* 现住址")
    private String address;

    /**
     * 兴趣爱好
     */
    @ExcelProperty(value = "兴趣爱好")
    private String hobby;

    /**
     * 特长
     */
    @ExcelProperty(value = "特长")
    private String specially;

    /**
     * 退休单位
     */
    @ExcelProperty(value = "退休单位")
    private String retiredUnit;

    /**
     * 职称
     */
    @ExcelProperty(value = "职称")
    private String title;

    /**
     * 结婚日类型
     */
    @ExcelProperty(value = "结婚日类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_birthday_type")
    private String weddingDayType;

    /**
     * 结婚日
     */
    @ExcelProperty(value = "结婚日")
    private String weddingDay;

    /**
     * 电话
     */
    @ExcelRequired(fontColor = IndexedColors.RED)
    @ExcelProperty(value = "* 电话")
    private String phone;

    /**
     * 家庭角色(是否做主)
     */
    @ExcelRequired(fontColor = IndexedColors.RED)
    @ExcelProperty(value = "* 家庭角色(是否做主)", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_yes_no")
    private String isBoss;

    /**
     * 退休金
     */
    @ExcelProperty(value = "退休金")
    private String pension;

    /**
     * 既往病史
     */
    @ExcelProperty(value = "既往病史")
    private String medicalHistory;

    /**
     * 身体状况
     */
    @ExcelProperty(value = "身体状况")
    private String physicalCondition;

    /**
     * 是否养生保健
     */
    @ExcelProperty(value = "是否养生保健", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_yes_no")
    private String isHealthCare;

    /**
     * 服用产品描述
     */
    @ExcelProperty(value = "服用产品")
    private String takingProductsDesc;

    /**
     * 为什么购买
     */
    @ExcelProperty(value = "为什么购买")
    private String whyBuy;

    /**
     * 购买方式
     */
    @ExcelProperty(value = "购买方式", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_buy_method")
    private String buyMethod;

    /**
     * 购买人
     */
    @ExcelRequired(fontColor = IndexedColors.RED)
    @ExcelProperty(value = "* 购买人")
    private String buyer;

    /**
     * 积分币
     */
    @ExcelProperty(value = "积分币")
    private String pointsCoin;

    /**
     * 会员等级
     */
    @ExcelProperty(value = "会员等级", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_member_level")
    private String memberLevel;

    /**
     * 客户类型
     */
    @ExcelRequired(fontColor = IndexedColors.RED)
    @ExcelProperty(value = "* 客户类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_customer_type")
    private String customerType;

    /**
     * 客户活跃度
     */
    @ExcelProperty(value = "客户活跃度", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_customer_activity")
    private String customerActivity;

    /**
     * 服务员工名称
     */
    @ExcelRequired(fontColor = IndexedColors.RED)
    @ExcelProperty(value = "* 服务员工名称")
    @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "staffId")
    private String staffName;

    @ExcelProperty(value = "备注")
    private String remark;

    @ExcelProperty(value = "是否公海用户", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_yes_no")
    private String isPublic;


}
